package com.alameda.common.commonpent.commonback.business;

import com.alameda.common.base.bo.CommonBackBO;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 通用后端 技术组件
 *
 * @author Lv
 * @date 2024/2/19
 */
@SuppressWarnings("all")
public interface CommonBackCommonpent<T> {
    /**
     * 通用获取详情
     *
     * @param commonBackBO 通用后端业务对象
     * @return
     */
    Map<String, Object> get(CommonBackBO commonBackBO);

    /**
     * 通用逻辑删除
     *
     * @param commonBackBO 通用后端业务对象
     * @return
     */
    Boolean remove(CommonBackBO commonBackBO);

    /**
     * 执行查询sql操作 无逻辑删除拦截处理
     *
     * @param sql 查询语句
     * @return
     */
    List<HashMap> executeFind(String sql);

    /**
     * 执行删除sql操作 物理删除
     *
     * @param sql 删除语句
     * @return
     */
    Integer executeDelete(String sql);

    /**
     * 获取类名称
     *
     * @param tableName 表名称
     * @return
     */
    String getClassName(String tableName);

    /**
     * 获取目标对象反射字节码
     *
     * @param pojoPath  路径
     * @param className 类名称
     * @return
     */
    Class<?> getTargetObjectClass(String pojoPath, String className);
}
